If DR=3 and X1=0 or DR=2 and Y1=14 or DR=1 and X1=19 or DR=0 and Y1=0
Pop Proc
End If
If DR=0 : YPOS=YPOS-16 : End If
If DR=1 : Add XPOS,16 : End If
If DR=2 : Add YPOS,16 : End If
If DR=3 : XPOS=XPOS-16 : End If
Wait Vbl
Bob 1,XPOS,YPOS,38
Wait Vbl
Wait Vbl
End Proc
Procedure PICKUP
MX=MAPXY(XPOS/16,YPOS/16)
If MX>23 and MX<30
Amal 1,"A 0,(38,10)(42,10)"
Amal On 1
End If
X1=XPOS/16 : Y1=YPOS/16
For I=16 To EXB-1
If DEAD(I)=0 and I>15
If X Bob(I)=XPOS and Y Bob(I)=YPOS : EXTRABOB=I : Goto HELL : End If
End If
Next I
Amal Off(1)
Pop Proc
HELL:
MOTION=1
Repeat
X1=XPOS/16 : Y1=YPOS/16
For I=16 To EXB-1
If DEAD(I)=0 and I>15
If X Bob(I)=XPOS and Y Bob(I)=YPOS : EXTRABOB=I : Goto HELLISH : End If
End If
Next I
MOTION=0
Amal Off(1)
Pop Proc
HELLISH:
If CONFUSION=1
If I Bob(EXTRABOB)<27 : GRAVITY=1 : End If
If I Bob(EXTRABOB)>26 : GRAVITY=0 : End If
End If
If GRAVITY=0
If BALLDR=-1
If Jup(1) : BALLDR=0 : If SFX=1 : Sam Play 1 : End If : SLIDE : End If
If Jright(1) : BALLDR=1 : If SFX=1 : Sam Play 1 : End If : SLIDE : End If
If Jdown(1) : BALLDR=2 : If SFX=1 : Sam Play 1 : End If : SLIDE : End If
If Jleft(1) : BALLDR=3 : If SFX=1 : Sam Play 1 : End If : SLIDE : End If
End If
End If
If GRAVITY=1
If BALLDR=-1
If Jright(1) : BALLDR=1 : DROP : End If
If Jleft(1) : BALLDR=3 : DROP : End If
End If
End If
CLOCK
If DEAD=1 : Pop Proc : End If
Until Fire(1)<>-1
Amal Off(1)
Bob 1,,,38
End Proc
Procedure SLIDE
HELL:
If DEAD(EXTRABOB)>0 or EXTRABOB<16 : MOTION=0 : Pop Proc : End If
Channel 0 To Bob EXTRABOB
X1=X Bob(1)/16 : Y1=Y Bob(1)/16
MAPXY(X1,Y1)=0
AROUND
CLOCK
If DEAD=1 : Pop Proc : End If
DX=DR(BALLDR)
For J=0 To 3
If I Bob(EXTRABOB)=DR(J)
For I=16 To EXB-1
If DEAD(I)=0
X=X Bob(I) : Y=Y Bob(I) : AJ=I Bob(I)
If AJ=I Bob(EXTRABOB)
If X=XPOS-16 and Y=YPOS or X=XPOS+16 and Y=YPOS or X=XPOS and Y=YPOS-16 or X=XPOS and Y=YPOS+16
YA=I
Bob Off(YA)
DEAD(YA)=1
Bob FREBOB,X,Y,42 : Amal FREBOB,XPLOSION$ : Amal On FREBOB
Inc GOT
FREBOB
MAPXY(X/16,Y/16)=0
End If
End If
End If
Next I
Bob Off(EXTRABOB)
Bob FREBOB,XPOS,YPOS,42 : Amal FREBOB,XPLOSION$ : Amal On FREBOB
Inc GOT : FREBOB
MAPXY(XPOS/16,YPOS/16)=0
MOTION=0 : BALLDR=-1
DEAD(EXTRABOB)=1
Repeat : Until Fire(1)<>-1 : Pop Proc
End If
Next J
If DX>0 : BALLDR=-1 : If SFX=1 : Sam Play 2 : End If : MOTION=0 : MAPXY(X1,Y1)=I Bob(EXTRABOB) : Pop Proc : End If
If BALLDR=0
YPOS=YPOS-16
End If
If BALLDR=1
XPOS=XPOS+16
End If
If BALLDR=2
YPOS=YPOS+16
End If
If BALLDR=3
XPOS=XPOS-16
End If
Bob EXTRABOB,XPOS,YPOS,I Bob(EXTRABOB)
Bob 1,XPOS,YPOS,38
X1=X Bob(1)/16 : Y1=Y Bob(1)/16
MAPXY(X1,Y1)=I Bob(EXTRABOB)
Goto HELL
End Proc
Procedure DROP
MOVEME=1
HELL:
If DEAD(EXTRABOB)>0 or EXTRABOB<16 : MOTION=0 : Pop Proc : End If
Channel 0 To Bob EXTRABOB
X1=X Bob(1)/16 : Y1=Y Bob(1)/16
MAPXY(X1,Y1)=0
AROUND
CLOCK
If DEAD=1 : Pop Proc : End If
DX=DR(BALLDR)
For J=0 To 3
If I Bob(EXTRABOB)=DR(J)
For I=16 To EXB-1
If DEAD(I)=0
X=X Bob(I) : Y=Y Bob(I) : AJ=I Bob(I)
If AJ=I Bob(EXTRABOB)
If X=XPOS-16 and Y=YPOS or X=XPOS+16 and Y=YPOS or X=XPOS and Y=YPOS-16 or X=XPOS and Y=YPOS+16
YA=I
X1=X Bob(YA)/16 : Y1=Y Bob(YA)/16
AROUND
Bob Off(YA)
DEAD(YA)=1
Bob FREBOB,X,Y,42 : Amal FREBOB,XPLOSION$ : Amal On FREBOB
Inc GOT
FREBOB
MAPXY(X/16,Y/16)=0
If DR(0)>23 and DR(0)<30
For V=16 To EXB-1
If DEAD(V)=0 and V>15
If X Bob(V)/16=X1 and Y Bob(V)/16=Y1-1
EX=EXTRABOB
EXTRABOB=V
DROP_OTHERS
End If
End If
Next V
EXTRABOB=EX
End If
End If
End If
End If
Next I
Bob Off(EXTRABOB)
Bob FREBOB,XPOS,YPOS,42 : Amal FREBOB,XPLOSION$ : Amal On FREBOB
Inc GOT : FREBOB
MAPXY(XPOS/16,YPOS/16)=0
MOTION=0 : BALLDR=-1
DEAD(EXTRABOB)=1
Pop Proc
End If
Next J
AROUND
If DX>0 : BALLDR=-1 : MOTION=0 : MAPXY(X1,Y1)=I Bob(EXTRABOB) : Pop Proc : End If
If MOVEME=1
If BALLDR=1
XPOS=XPOS+16
End If
If BALLDR=2
YPOS=YPOS+16
End If
If BALLDR=3
XPOS=XPOS-16
End If
End If
Wait Vbl
Bob EXTRABOB,XPOS,YPOS,I Bob(EXTRABOB)
Bob 1,XPOS,YPOS,38
Wait Vbl
X5=X Bob(1)/16 : Y5=Y Bob(1)/16
MAPXY(X5,Y5)=I Bob(EXTRABOB)
EX=EXTRABOB
If DR(0)>23 and DR(0)<30
I=0
For I=16 To EXB-1
If DEAD(I)=0 and I>15
If X Bob(I)/16=X1 and Y Bob(I)/16=Y1-1
EX=EXTRABOB
EXTRABOB=I
DROP_OTHERS
End If
End If
Next I
EXTRABOB=EX
End If
X1=X Bob(1)/16 : Y1=Y Bob(1)/16
AROUND
If DR(2)=0 : BALLDR=2 : End If
If BALLDR=2 : Goto HELL : End If
If MOVEME=1 : MOVEME=0 : Goto HELL : End If
BALLDR=-1 : MOTION=0
End Proc
Procedure DROP_OTHERS
MOVEME=1
HELL:
Channel 0 To Bob EXTRABOB
X1=X Bob(EXTRABOB)/16 : Y1=Y Bob(EXTRABOB)/16
X2=X Bob(EXTRABOB) : Y2=Y Bob(EXTRABOB)
MAPXY(X1,Y1)=0
BALLDR=2
AROUND
CLOCK
If DEAD=1 : Pop Proc : End If
DX=DR(2)
For J=0 To 3
If I Bob(EXTRABOB)=DR(J)
For S=16 To EXB-1
If DEAD(S)=0
X=X Bob(S) : Y=Y Bob(S) : AJ=I Bob(S)
If AJ=I Bob(EXTRABOB)
If X=X2-16 and Y=Y2 or X=X2+16 and Y=Y2 or X=X2 and Y=Y2-16 or X=X2 and Y=Y2+16
YA=S
X1=X Bob(YA)/16 : Y1=Y Bob(YA)/16
AROUND
Bob Off(YA)
DEAD(YA)=1
Bob FREBOB,X,Y,42 : Amal FREBOB,XPLOSION$ : Amal On FREBOB
Inc GOT
FREBOB
MAPXY(X/16,Y/16)=0
If NTB=0
If DR(0)>23 and DR(0)<30
For Q=16 To EXB-1
If DEAD(Q)=0 and Q>15
If X Bob(Q)/16=X1 and Y Bob(Q)/16=Y1-1
EV=EXTRABOB
EXTRABOB=Q
Goto HELL
NTB=1
End If
End If
Next Q
EXTRABOB=EV
End If
End If
End If
End If
End If
Next S
Bob Off(EXTRABOB)
Bob FREBOB,X2,Y2,42 : Amal FREBOB,XPLOSION$ : Amal On FREBOB
Inc GOT : FREBOB
MAPXY(X2/16,Y2/16)=0
DEAD(EXTRABOB)=1
NTB=0
Pop Proc
End If
Next J
If MOVEME=1
If BALLDR=2
Y2=Y2+16
End If
End If
Bob EXTRABOB,X2,Y2,I Bob(EXTRABOB)
X7=X Bob(EXTRABOB)/16 : Y7=Y Bob(EXTRABOB)/16
MAPXY(X7,Y7)=I Bob(EXTRABOB)
If DR(0)>23 and DR(0)<30
For Z=16 To EXB-1
If DEAD(Z)=0 and Z>15
If X Bob(Z)/16=X1 and Y Bob(Z)/16=Y1-1
EXTRABOB=Z
MOVEME=1
Goto HELL
End If
End If
Next Z
End If
X1=X Bob(EXTRABOB)/16 : Y1=Y Bob(EXTRABOB)/16
AROUND
If DR(2)=0 : BALLDR=2 : Goto HELL : End If
If MOVEME=1 : MOVEME=0 : Goto HELL : End If
NTB=0
End Proc
Procedure CLOCK
Screen 1
Ink 3
Draw(1+TL-Timer/50),2 To(1+TL-Timer/50),14
If TL-Timer/50<0 : DEAD=1 : End If
Screen 0
End Proc
Procedure LIVES
Screen 1
Ink 1,0
Paste Bob 250,0,38
Text 270,10,"x"+Str$(LVS)-" "
Screen 0
End Proc
Procedure TSCREEN
GRAVITY=0 : CONFUSION=0
Unpack 15 To 0
If MUS=1 : STILLHERE=1 : Track Play 5 : End If
SC$="B R A I N S H A V E | Written by Andrew Campbell using AMOS Professional and AMOS Professional Compiler by Europress Software. How to play... "
SC$=SC$+"Brain Shave is the sequel to Enigma, a public domain game available on The Funhouse disk (along with Thundertron and Imagine Slideshow 2) and in the incredible Assassin's collection. Those of you who have played Enigma (or"
SC$=SC$+" White Rabbits) will find this concept frighteningly easy to get to grips with. The object of the game is to match up all the coloured tiles by dragging them around the screen using the joystick-controlled cursor. "
SC$=SC$+" To pick up a tile and move it, simply press and hold fire down, then move the stick left/right/up/down and (if the block is free to move in that direction) you will be able to guide the blocks into collision. Sounds a bit "
SC$=SC$+"complicated? I assure you, this game dead simple. Be warned that the EASY level contains a Zeus/Puzznik-style gravity system where the blocks will fall if they have nothing underneath them to support them! "
SC$=SC$+" Fans of Enigma (if there are any out there) will be pleased to know I have conjured up another nice collection of brain-teasters in a similar mould. I hope you enjoy the special effects and the silly sound FX as well as "
SC$=SC$+"the game it's self. If anyone has any comments or anything would they please write to me : AJC, 4 Alloe Field Place, Illingworth, Halifax, HX2 9ES (okay, since you read the scroller this far - press F4 for a good laugh) "
SC$=SC$+" You can be sure of a swift reply from me, even if you take the mickey out of my PD games! Just write will you? I'll send you some of my other PD games on request! Just time for a quick bit"
SC$=SC$+" of traditional scrolling greetings I suppose. Best wishes go out to the following playtesters, associates and best friends : Tony K, Keith M, Munaver K, Zaheer I, Jonathan C, Neale 'Doctor Roney' G, Graeme 'Professor' V, "
SC$=SC$+" Chris 'A1200' S, Chris 'the big one', Michelle F, Nicola B, Jason 'Mushroom' S, Maureen 'English Teacher' W (haha! Gotcha miss), Jenny 'I've vanished' B, Lee 'nutter' H, Paul S, Jeremy 'Warhammer 40,000' and millions more that I"
SC$=SC$+" just happened to forget. Including you - the reader of this incredibly boring scrolly. Haven't you anything better to do? Lets wrap this bummer up shall we? Here we go! "
Def Scroll 1,1,235 To 320,250,-2,0
CPOS=1
Set Text 2
Ink 1,0
Hide On
HEAVEN:
K$=""
Clear Key
Repeat
K$=Inkey$
For I=1 To 2
Wait Vbl
Scroll 1
Next I
Add PC,4
If PC>5
E$=Mid$(SC$,CPOS,1)
If E$="|" : Wait 50 : Else Ink 16,0 : Text 312,246,E$ : Ink 1,0 : Text 309,241,E$ : End If
PC=0
Inc CPOS
If CPOS>Len(SC$) : CPOS=1 : End If
End If
Until K$<>""
SC=Scancode
If Upper$(K$)="M" and MUS=1 : MUS=0 : STILLHERE=1 : Track Stop : Goto HEAVEN : End If